package com.open.cloud.rbac.service.role;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.open.cloud.rbac.entity.role.CoreRole;
import com.open.cloud.rbac.entity.role.CoreRolePermissionRel;
import com.open.cloud.rbac.object.role.*;

import java.util.List;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author wangzengzhou01
 * @since 2024-12-23
 */
public interface ICoreRoleService extends IService<CoreRole> {
    /**
     * 新增角色信息
     *
     * @param roleDto
     * @return
     */
    public JSONObject addRoleInfo(CoreRoleDto roleDto);

    /**
     * 更新角色信息
     *
     * @param roleDto
     * @return
     */
    public JSONObject updateRoleInfo(CoreRoleDto roleDto);

    /**
     * 删除角色信息
     *
     * @param roleId
     * @param isForce
     * @return
     */
    public JSONObject deleteRoleInfo(String roleId, Boolean isForce);

    /**
     * 根据条件分页查询角色信息
     *
     * @param selectDto
     * @return
     */
    public IPage<CoreRoleVo> getRolePage(CoreRoleSelectDto selectDto);

    /**
     * 获取角色列表
     *
     * @param selectDto
     * @return
     */
    public List<CoreRole> getRoleList(CoreRoleSelectDto selectDto);

    /**
     * 根据角色Id 获取权限关联列表
     *
     * @param roleId
     * @return
     */
    public List<CoreRolePermissionRel> getRolePermissionRelList(String roleId);

    /**
     * 设置角色权限关联
     *
     * @param rolePermissionDto
     * @return
     */
    public JSONObject setRolePermissionRel(CoreRolePermissionDto rolePermissionDto);

    /**
     * 根据orgId查询关联Role列表
     *
     * @param orgId
     * @return
     */
    public List<String> getOrgRelRoleByOrgId(String orgId);

    /**
     * 组织分配角色
     *
     * @param roleOrgRelDto
     * @return
     */
    public JSONObject setOrgRelRole(CoreRoleOrgRelDto roleOrgRelDto);

    /**
     * 根据postId获取角色Ids
     *
     * @param postId
     * @return
     */
    public List<String> getRoleIdsRelPostByPostId(String postId);

    /**
     * 岗位分配角色
     *
     * @param postRelDto
     * @return
     */
    public JSONObject setPostRelRole(CoreRolePostRelDto postRelDto);

    /**
     * 根据userId获取角色Ids
     *
     * @param userId
     * @return
     */
    public List<String> getRoleIdsRelUserByUserId(String userId);

    /**
     * 用户分配角色
     *
     * @param userRelDto
     * @return
     */
    public JSONObject setUserRelRole(CoreRoleUserRelDto userRelDto);

}
